package top.lixunda.ecommerce.server.good.api.entity.db;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * <p>
 * 购物车表
 * </p>
 *
 * @author Xumda
 * @since 2019-12-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("user_car")
public class UserCarDO extends Model<UserCarDO> {

    private static final long serialVersionUID=1L;

    public static final String DESC_USEABLE_REMOVE = "用户删除";

    public static final String DESC_USEABLE_ORDER = "加入订单";

    /**
     * 购物车物品id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户id
     */
    @TableField("user_id")
    private Integer userId;

    /**
     * 商家id，不能为空，为空时表示店铺数据已被删除，理论上不会进行删除，只会通过更改特殊字段的方式删除数据
     */
    @TableField("store_id")
    private Integer storeId;

    /**
     * 商家名称
     */
    @TableField("store_name")
    private String storeName;

    /**
     * 商品id，不能为空，为空时表示商品数据已被删除，理论上不会进行删除，只会通过更改特殊字段的方式删除数据
     */
    @TableField("good_id")
    private Integer goodId;

    /**
     * 商品名称
     */
    @TableField("good_name")
    private String goodName;

    /**
     * 子商品id，不能为空，为空时表示子商品数据已被删除，理论上不会进行删除，只会通过更改特殊字段的方式删除数据
     */
    @TableField("sub_good_id")
    private Integer subGoodId;

    /**
     * 子商品名称
     */
    @TableField("sub_good_name")
    private String subGoodName;

    /**
     * 数量，大于等于一
     */
    @TableField("count")
    private Integer count;

    /**
     * 加入购物车时的价格，不作为支付标准，支付时应重新查询商品价格，单价
     */
    @TableField("price")
    private BigDecimal price;

    /**
     * 是否删除
     */
    @TableField("useable")
    @TableLogic
    @JsonIgnore
    private Integer useable;

    /**
     * 删除描述，加入订单，手动删除
     */
    @TableField("useable_desc")
    private String useableDesc;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
